#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <algorithm>

using namespace std;

void test()
{
    vector<int> vi {1, 2, 3, 4, 5};
    vi.erase(remove(vi.begin(), vi.end(), 5) , vi.end());
}

void test1()
{
    //list remove
    list<int> li;
    li.remove(1);

    //关联容器 erase
}

bool del(const int& i)
{
    if (i > 2)
    {
        return true;
    }
    
    return false;
}

void test2()
{
    set<int> si {1, 2, 3, 4, 5};
    for (set<int>::iterator siter = si.begin(); siter != si.end(); )
    {
        if (del(*siter))
        {
            si.erase(siter++);
        }
        else
        {
            siter++;
        }
    }

    for (auto i : si)
    {
        cout << i << " ";
    }
    cout << endl;
}

int main()
{
    test2();
    return 0;
}
